/**
 * Author:  camilla.luo
 * Date:  2017/4/13
 * Last Modified by: camilla.luo
 * Last Modified time: 15:47
 * Description: 这是ApproachAxis的jQuery版本。此外，基于的算法也不一样。zxz
 */
'use strict';
(function ($) {
    $.fn.extend({'maskShow':function(ele){
        var nowObj=null,$modalObj= null,opt={};
        var oEase='';
        var duration=200;
        /*鼠标移入*/
        $(this).mouseenter(function (e) {
            var ev=e||window.event;
            $modalObj=$(this).find(ele);
            nowObj=$(this);

            /*缓存当前对象的坐标取值范围,及尺寸*/
            opt={
                x1: nowObj.offset().left,
                x2: nowObj.offset().left+parseInt(nowObj.width()),
                y1: nowObj.offset().top,
                y2: nowObj.offset().top+parseInt(nowObj.height()),
                w: nowObj.width(),
                h: nowObj.height()
            };

            /*getDir() 返回值是0-3，分别代表上右下左*/
            var oDir=getDir(nowObj,ev);
            if(oDir==1){
                $modalObj.css({
                    display:'block',
                    left:0,
                    top:-opt.h
                }).animate({
                    top:0
                },duration,oEase)
            }else if(oDir==2){
                $modalObj.css({
                    display:'block',
                    left:opt.w,
                    top:0
                }).animate({
                    left:0
                },duration,oEase)
            }else if(oDir==3){
                $modalObj.css({
                    display:'block',
                    left:0,
                    top:opt.h
                }).animate({
                    top:0
                },duration,oEase)
            }else if(oDir==4){
                $modalObj.css({
                    display:'block',
                    left:-opt.w,
                    top:0
                }).animate({
                    left:0
                },duration,oEase)
            }else{
                console.log("代码计算出错");
            }
        }).
            mouseleave(function (e) {
                var ev=e||window.event;
                /*getDir() 返回值是0-3，分别代表上右下左*/
                var oDir=getDir(nowObj,ev);
                if(oDir==1){
                    $modalObj.animate({
                        top:-opt.h
                    },duration,oEase)
                }else if(oDir==2){
                    $modalObj.animate({
                        left:opt.w
                    },duration,oEase)
                }else if(oDir==3){
                    $modalObj.animate({
                        top:opt.h
                    },duration,oEase)
                }else if(oDir==4){
                    $modalObj.animate({
                        left:-opt.w
                    },duration,oEase)
                }else{
                    console.log("代码计算出错");
                }
            });
        /*根据判断鼠标离哪条边，最近得出结果*/
        function getDir(obj,ev){
            /*当前鼠标的位置*/
            var oPos={
                x: ev.pageX,
                y: ev.pageY
            };
            /*计算点到各边的距离*/
            var oDis={
                top:Math.abs(oPos.y-opt.y1),
                right:Math.abs(oPos.x-opt.x2),
                bottom:Math.abs(oPos.y-opt.y2),
                left:Math.abs(oPos.x-opt.x1)
            };
            /*计算最小的距离*/
            var oMin=oDis.top, oIndex=0;
            $.each(oDis, function (i, n) {
                if(n<=oMin){
                    oMin=n;
                    oIndex=i;
                }
            });
            switch(oIndex){
                case 'top': return 1;
                case 'right': return 2;
                case 'bottom': return 3;
                case 'left': return 4;
                default :return 0;
            }
        }
    }});
})(jQuery);



